package tingshu.service;

import org.mindrot.jbcrypt.BCrypt;
import tingshu.data_object.UserDO;
import tingshu.repository.UserRepo;
import tingshu.view_object.UserVO;

//实现用户的数据处理，调用UserRepo实现数据的插入，获取插入数据库中的用户数据
//在经过数据处理(加密等等),最后将需要展示的信息返回给前端
public class UserService {
    UserRepo userRepo = new UserRepo();
    public UserVO register(String username,String password) {
        //进行数据加密
        String gensalt = BCrypt.gensalt();
        password = BCrypt.hashpw(password,gensalt);

        UserDO userDO = new UserDO(username,password);
        //插入数据库中
        userRepo.insert(userDO);
        return new UserVO(userDO);
    }

    public UserVO login(String username, String password) {
        UserDO userDO = userRepo.select(username);

        //用户名输入错误没有找到用户,返回null
        if (userDO == null) {
            return null;
        }

        //进行密码检查，看用户输入的密码是否正确
        if (BCrypt.checkpw(password,userDO.password)) {
            return new UserVO(userDO);
        } else {
            return null;
        }
    }
}
